#include <iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int nums[2 * n + 1] = {0};
    int num;
    for(int i = 0; i < n; i++){
        cin>>num;
        nums[num] = 1;
    }
    int left = 1, right;
    int res = 0;
    while(left <= 2 * n && nums[left] != 1) left++;
    while(left <= 2 * n){
        right = left;
        while(right <= 2 * n && nums[right] != 0) right++;
        if(right > 2 * n)
            break;
        nums[left] = 2;
        nums[right] = 2;
        res++;
        while(left <= 2 * n && nums[left] != 1) left++;
    } 
    cout<<res;
    return 0;
}
/*

题目描述
有2N张牌，它们的点数分别为1到2N。小柯拿了其中的N张，小鹏拿了剩下的N张. 小柯和小鹏会进行N轮游戏，
在每轮游戏中，小柯和小鹏各出一张牌。出了的牌不能收回。每轮谁的牌点数大谁就赢; 
已知小鹏每一轮会出什么牌，试求小柯最多能赢多少轮。


输入说明
输入2行，

第一行是一个整数N,

第二行是这N个空格分隔的整数，表示小鹏每轮的出牌。

2<=N <= 200000

输出说明
一个整数，为小柯最多能赢几轮

输入样例复制
4

1 3 4 8

输出样例复制
3

数据范围提示
小鹏手里的牌是1 3 4 8

小柯手里的牌为2 5 6 7

显然小柯可以选择用

2 v 1

5 v 3

6 v 4

7 v 8

这样就可以赢3轮
*/